#pragma once
#include <map>
#include <string>
#include <complex>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#include <Types.h>
#include <Defines.h>
#include <BasicDagLibrary.h>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void ProcessMMFileHeader( const std::string & fileName, std::ifstream & inputFile, MatrixProperties & mtxInfo );
void ReadInMMElements( std::map<Coordinate, S64    >               & A, std::ifstream & inputFile, MatrixProperties & mtxInfo, const bool expandSymmMats );
void ReadInMMElements( std::map<Coordinate, double >               & A, std::ifstream & inputFile, MatrixProperties & mtxInfo, const bool expandSymmMats );
void ReadInMMElements( std::map<Coordinate, std::complex<double> > & A, std::ifstream & inputFile, MatrixProperties & mtxInfo, const bool expandSymmMats );
void MtxMarket2SparseArray( const std::string & mtxFileName, const std::string & fmt, std::map< U64, double > & spa, MatrixProperties & mtxMetaData );
